package note.sort;

/**
 * @program: LeetCodePractice
 * @description: 选择排序
 * @author: WongKee
 * @create: 2020-08-27 08:53
 *
 * 选择排序的思想：
 * 首先，找到数组中最小的元素，其次，将它和数组的第一个元素交换位置。
 * 再次，在剩下的元素中找最小的元素，将它与数组的第二个元素交换位置
 * 直到整个数组有序
 *
 **/
public class SelectionSort  extends  Example{

    @Override
    void sort(Comparable[] a) {
        if(a==null) return;
        int len=a.length;

        for(int i=0;i<len;i++){//将a[i]与a[i+1..N]中最小的元素交换
            int min_index=i;
            for(int j=i+1;j<len;j++){
                if(less(a[j],a[min_index])){
                    min_index=j;
                }
            }
            exch(a,i,min_index);
        }
    }

    public static void main(String[] args) {
        SelectionSort solution=new SelectionSort();
        Integer[] arr=new Integer[]{1,3,5,2,4};
        solution.sort(arr);
        solution.show(arr);
        System.out.println(solution.isSorted(arr));
    }
}
